module execute1(
        // from previous stage
        input           i_pipe_valid,
        input   [31:2]  i_pipe_pc,
        input   [31:0]  i_pipe_instr,
        input   [31:0]  i_pipe_retaddr,
        input   [ 3:0]  i_pipe_cond,
        input   [ 3:0]  i_pipe_gpr_rn_sel,
        input   [ 3:0]  i_pipe_gpr_rd_sel, // cgen: fb=true
        input           i_pipe_gpr_rd_sel_usr,
        input   [ 3:0]  i_pipe_gpr_rs_sel,
        input   [ 3:0]  i_pipe_gpr_rm_sel,
        input           i_pipe_gpr_we0,
        input   [ 3:0]  i_pipe_gpr_wa0,
        input           i_pipe_gpr_wa0_exc,
        input           i_pipe_gpr_dsel0_ex1,
        input   [ 1:0]  i_pipe_gpr_dsel0_ex2,
        input   [ 1:0]  i_pipe_gpr_dsel0_ex3,
        input   [ 1:0]  i_pipe_gpr_dsel0_wb,
        input           i_pipe_gpr_we1,
        input   [ 3:0]  i_pipe_gpr_wa1, // cgen: fb=true
        input           i_pipe_gpr_wa1_usr,
        input           i_pipe_gpr_dsel1,
        input   [ 3:0]  i_pipe_alu_op,
        input           i_pipe_shifter_operand_imm,
        input           i_pipe_cpsr_nzcv_we,
        input   [ 1:0]  i_pipe_cpsr_nzcv_dsel,
        input   [ 2:0]  i_pipe_cpsr_aif_we,
        input   [ 1:0]  i_pipe_cpsr_aif_dsel,
        input   [ 2:0]  i_pipe_cpsr_aif_d_imm,
        input           i_pipe_cpsr_mode_we,
        input   [ 1:0]  i_pipe_cpsr_mode_dsel,
        input   [ 4:0]  i_pipe_cpsr_mode_d_imm,
        input           i_pipe_cpsr_priv,
        input           i_pipe_spsr_we,
        input           i_pipe_spsr_dsel,
        input           i_pipe_ls,
        input           i_pipe_ls_store,
        input   [ 2:0]  i_pipe_ls_addr_offset_sel,
        input   [ 1:0]  i_pipe_ls_addr_sel,
        input           i_pipe_ls_part,
        input           i_pipe_ls_half,
        input           i_pipe_ls_ld_sign_ext,
        input           i_pipe_ls_double,
        input           i_pipe_lsm,
        input   [15:0]  i_pipe_lsm_reglist, // cgen: fb=true
        input   [ 4:0]  i_pipe_lsm_regcnt_tot,
        input   [ 4:0]  i_pipe_lsm_regcnt_dec, // cgen: fb=true
        input   [ 3:0]  i_pipe_lsm_regcnt_inc, // cgen: fb=true
        input           i_pipe_branch_ex1,
        input   [ 1:0]  i_pipe_branch_ex1_dest_sel,
        input   [ 4:2]  i_pipe_branch_ex1_dest_imm,
        input           i_pipe_branch_wb,
        input           i_pipe_branch_wb_dest_sel,
        input           i_pipe_mul,
        input           i_pipe_mul_long,
        input           i_pipe_mul_sign,
        input           i_pipe_mul_add,
        input   [ 1:0]  i_pipe_ext_rot,
        input   [ 1:0]  i_pipe_ext_op,
        input           i_pipe_ext_sign,
        input           i_pipe_ext_add,
        input           i_pipe_coproc_sel,
        input   [ 3:0]  i_pipe_coproc_cp_num,
        input   [ 2:0]  i_pipe_coproc_op1,
        input   [ 2:0]  i_pipe_coproc_op2,
        input   [ 3:0]  i_pipe_coproc_crn,
        input   [ 3:0]  i_pipe_coproc_crm,

        // to next stage
        output          o_pipe_valid,
        output  [31:2]  o_pipe_pc,
        output  [31:0]  o_pipe_instr,
        output  [31:0]  o_pipe_gpr_rn,
        output  [31:0]  o_pipe_gpr_rm,
        output  [31:0]  o_pipe_gpr_rs,
        output  [31:0]  o_pipe_gpr_rd,
        output          o_pipe_gpr_we0,
        output  [ 3:0]  o_pipe_gpr_wa0,
        output          o_pipe_gpr_wa0_exc,
        output  [ 1:0]  o_pipe_gpr_dsel0_ex2,
        output  [ 1:0]  o_pipe_gpr_dsel0_ex3,
        output  [ 1:0]  o_pipe_gpr_dsel0_wb,
        output  [31:0]  o_pipe_gpr_d0_prev,
        output          o_pipe_gpr_we1,
        output  [ 3:0]  o_pipe_gpr_wa1,
        output          o_pipe_gpr_wa1_usr,
        output          o_pipe_gpr_dsel1,
        output  [14:0]  o_pipe_gpr_we,
        output  [31:0]  o_pipe_cpsr,
        output          o_pipe_cpsr_nzcv_we,
        output  [ 1:0]  o_pipe_cpsr_nzcv_dsel,
        output  [ 2:0]  o_pipe_cpsr_aif_we,
        output  [ 1:0]  o_pipe_cpsr_aif_dsel,
        output  [ 2:0]  o_pipe_cpsr_aif_d_imm,
        output          o_pipe_cpsr_mode_we,
        output  [ 1:0]  o_pipe_cpsr_mode_dsel,
        output  [ 4:0]  o_pipe_cpsr_mode_d_imm,
        output  [31:0]  o_pipe_spsr,
        output          o_pipe_spsr_we,
        output          o_pipe_spsr_dsel,
        output  [ 3:0]  o_pipe_alu_op,
        output          o_pipe_shifter_operand_imm,
        output          o_pipe_ls,
        output          o_pipe_ls_store,
        output  [ 2:0]  o_pipe_ls_addr_offset_sel,
        output  [ 1:0]  o_pipe_ls_addr_sel,
        output          o_pipe_ls_part,
        output          o_pipe_ls_half,
        output          o_pipe_ls_ld_sign_ext,
        output          o_pipe_ls_double,
        output  [ 4:0]  o_pipe_lsm_regcnt_tot,
        output  [ 4:0]  o_pipe_lsm_regcnt_dec,
        output  [ 3:0]  o_pipe_lsm_regcnt_inc,
        output          o_pipe_branch,
        output  [ 1:0]  o_pipe_branch_dest_sel,
        output  [31:2]  o_pipe_branch_dest_ex1,
        output          o_pipe_mul,
        output          o_pipe_mul_sign,
        output          o_pipe_mul_long,
        output          o_pipe_mul_add,
        output  [ 1:0]  o_pipe_ext_rot,
        output  [ 1:0]  o_pipe_ext_op,
        output          o_pipe_ext_sign,
        output          o_pipe_ext_add,
        output          o_pipe_coproc_sel,
        output  [ 3:0]  o_pipe_coproc_cp_num,
        output  [ 2:0]  o_pipe_coproc_op1,
        output  [ 2:0]  o_pipe_coproc_op2,
        output  [ 3:0]  o_pipe_coproc_crn,
        output  [ 3:0]  o_pipe_coproc_crm,

        // feedback output
        output          o_fb_valid,
        output  [31:2]  o_fb_pc,
        output  [31:0]  o_fb_instr,
        output  [31:0]  o_fb_retaddr,
        output  [ 3:0]  o_fb_cond,
        output  [ 3:0]  o_fb_gpr_rn_sel,
        output  [ 3:0]  o_fb_gpr_rd_sel, // cgen: fb=true
        output          o_fb_gpr_rd_sel_usr,
        output  [ 3:0]  o_fb_gpr_rs_sel,
        output  [ 3:0]  o_fb_gpr_rm_sel,
        output          o_fb_gpr_we0,
        output  [ 3:0]  o_fb_gpr_wa0,
        output          o_fb_gpr_wa0_exc,
        output          o_fb_gpr_dsel0_ex1,
        output  [ 1:0]  o_fb_gpr_dsel0_ex2,
        output  [ 1:0]  o_fb_gpr_dsel0_ex3,
        output  [ 1:0]  o_fb_gpr_dsel0_wb,
        output          o_fb_gpr_we1,
        output  [ 3:0]  o_fb_gpr_wa1, // cgen: fb=true
        output          o_fb_gpr_wa1_usr,
        output          o_fb_gpr_dsel1,
        output  [ 3:0]  o_fb_alu_op,
        output          o_fb_shifter_operand_imm,
        output          o_fb_cpsr_nzcv_we,
        output  [ 1:0]  o_fb_cpsr_nzcv_dsel,
        output  [ 2:0]  o_fb_cpsr_aif_we,
        output  [ 1:0]  o_fb_cpsr_aif_dsel,
        output  [ 2:0]  o_fb_cpsr_aif_d_imm,
        output          o_fb_cpsr_mode_we,
        output  [ 1:0]  o_fb_cpsr_mode_dsel,
        output  [ 4:0]  o_fb_cpsr_mode_d_imm,
        output          o_fb_cpsr_priv,
        output          o_fb_spsr_we,
        output          o_fb_spsr_dsel,
        output          o_fb_ls,
        output          o_fb_ls_store,
        output  [ 2:0]  o_fb_ls_addr_offset_sel,
        output  [ 1:0]  o_fb_ls_addr_sel,
        output          o_fb_ls_part,
        output          o_fb_ls_half,
        output          o_fb_ls_ld_sign_ext,
        output          o_fb_ls_double,
        output          o_fb_lsm,
        output  [15:0]  o_fb_lsm_reglist, // cgen: fb=true
        output  [ 4:0]  o_fb_lsm_regcnt_tot,
        output  [ 4:0]  o_fb_lsm_regcnt_dec, // cgen: fb=true
        output  [ 3:0]  o_fb_lsm_regcnt_inc, // cgen: fb=true
        output          o_fb_branch_ex1,
        output  [ 1:0]  o_fb_branch_ex1_dest_sel,
        output  [ 4:2]  o_fb_branch_ex1_dest_imm,
        output          o_fb_branch_wb,
        output          o_fb_branch_wb_dest_sel,
        output          o_fb_mul,
        output          o_fb_mul_long,
        output          o_fb_mul_sign,
        output          o_fb_mul_add,
        output  [ 1:0]  o_fb_ext_rot,
        output  [ 1:0]  o_fb_ext_op,
        output          o_fb_ext_sign,
        output          o_fb_ext_add,
        output          o_fb_coproc_sel,
        output  [ 3:0]  o_fb_coproc_cp_num,
        output  [ 2:0]  o_fb_coproc_op1,
        output  [ 2:0]  o_fb_coproc_op2,
        output  [ 3:0]  o_fb_coproc_crn,
        output  [ 3:0]  o_fb_coproc_crm,

        // pipeline control
        output          o_done,
        output          o_valid,

        // to gpr
        output  [ 3:0]  o_gpr_rn_sel, // cgen: type=output cname=o_rn_sel
        output  [ 3:0]  o_gpr_rm_sel, // cgen: type=output cname=o_rm_sel
        output  [ 3:0]  o_gpr_rs_sel, // cgen: type=output cname=o_rs_sel
        output  [ 3:0]  o_gpr_rd_sel, // cgen: type=output cname=o_rd_sel
        output          o_gpr_rd_sel_usr, // cgen: type=output cname=o_rd_sel_usr

        // from gpr
        input   [31:0]  i_gpr_rn, // cgen: type=input cname=i_rn
        input   [31:0]  i_gpr_rm, // cgen: type=input cname=i_rm
        input   [31:0]  i_gpr_rs, // cgen: type=input cname=i_rs
        input   [31:0]  i_gpr_rd, // cgen: type=input cname=i_rd

        // from cpsr
        input   [31:0]  i_cpsr, // cgen: type=input cname=i_pipe_cpsr_q

        // from spsr
        input   [31:0]  i_spsr  // cgen: type=input cname=i_pipe_spsr_q
);

`include "enum.vh"

wire            condpass;
wire    [14:0]  gpr_we;
wire    [3:0]   lsm_rd_sel_fb;
wire    [3:0]   lsm_gpr_wa1_fb;
wire            lsm_branch_wb_ldm;
wire            lsm_busy;
wire            lsm_gpr_we0;
wire    [15:0]  lsm_reglist_fb;
wire    [ 4:0]  lsm_regcnt_dec_fb;
wire    [ 3:0]  lsm_regcnt_inc_fb;
reg     [31:2]  branch_dest_ex1;
wire            cpsr_priv;
reg     [31:0]  gpr_d0_prev;
wire will_branch_wb;
wire branch_wb;
wire branch_ex1;

cond_decoder u_cond_decoder(
  .i_cond(i_pipe_cond),
  .i_nzcv(i_cpsr[31:28]),
  .o_pass(condpass)
);

lsm u_lsm(
        .i_reglist(i_pipe_lsm_reglist),
        .i_regcnt_dec(i_pipe_lsm_regcnt_dec),
        .i_regcnt_inc(i_pipe_lsm_regcnt_inc),
        .i_store(i_pipe_ls_store),
        .i_gpr_wa1(i_pipe_gpr_wa1),
        .i_gpr_we0(i_pipe_gpr_we0),
        .o_reglist_fb(lsm_reglist_fb),
        .o_regcnt_dec_fb(lsm_regcnt_dec_fb),
        .o_regcnt_inc_fb(lsm_regcnt_inc_fb),
        .o_rd_sel_fb(lsm_rd_sel_fb),
        .o_gpr_wa1_fb(lsm_gpr_wa1_fb),
        .o_branch_wb_ldm(lsm_branch_wb_ldm),
        .o_busy(lsm_busy),
        .o_gpr_we0(lsm_gpr_we0)
);

always @* begin
        case (i_pipe_branch_ex1_dest_sel)
                BR_DEST_EX1_SEL_OFF : branch_dest_ex1 = i_pipe_pc + {{6{i_pipe_instr[23]}}, i_pipe_instr[23:0]};
                BR_DEST_EX1_SEL_RM  : branch_dest_ex1 = i_gpr_rm[31:2];
                BR_DEST_EX1_SEL_IMM : branch_dest_ex1 = {27'b0, i_pipe_branch_ex1_dest_imm};
                default             : branch_dest_ex1 = 30'bx;
        endcase
end

always @* begin
        case (i_pipe_gpr_dsel0_ex1)
                GPR_DSEL0_EX1_BL   : gpr_d0_prev = i_pipe_retaddr;
                GPR_DSEL0_EX1_MOVW : gpr_d0_prev = {16'b0, i_pipe_instr[19:16], i_pipe_instr[11:0]};
                default            : gpr_d0_prev = 32'bx;
        endcase
end

assign gpr_we[ 0] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  0 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  0 ;
assign gpr_we[ 1] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  1 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  1 ;
assign gpr_we[ 2] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  2 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  2 ;
assign gpr_we[ 3] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  3 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  3 ;
assign gpr_we[ 4] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  4 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  4 ;
assign gpr_we[ 5] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  5 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  5 ;
assign gpr_we[ 6] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  6 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  6 ;
assign gpr_we[ 7] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  7 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  7 ;
assign gpr_we[ 8] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  8 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  8 ;
assign gpr_we[ 9] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 ==  9 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 ==  9 ;
assign gpr_we[10] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 == 10 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 == 10 ;
assign gpr_we[11] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 == 11 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 == 11 ;
assign gpr_we[12] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 == 12 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 == 12 ;
assign gpr_we[13] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 == 13 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 == 13 ;
assign gpr_we[14] = o_pipe_gpr_we0 & o_pipe_gpr_wa0 == 14 | o_pipe_gpr_we1 & o_pipe_gpr_wa1 == 14 ;

assign cpsr_priv = i_pipe_cpsr_priv | |i_cpsr[1:0];

assign o_pipe_valid = i_pipe_valid;
assign o_pipe_pc = i_pipe_pc;
assign o_pipe_instr = i_pipe_instr;
assign o_pipe_gpr_rn = &i_pipe_gpr_rn_sel ? {i_pipe_pc, 2'b0} : i_gpr_rn;
assign o_pipe_gpr_rm = &i_pipe_gpr_rm_sel ? {i_pipe_pc, 2'b0} : i_gpr_rm;
assign o_pipe_gpr_rs = i_gpr_rs; // specifying R15 as Rs has UNPREDICTABLE results
assign o_pipe_gpr_rd = &i_pipe_gpr_rd_sel ? {i_pipe_pc, 2'b0} : i_gpr_rd;
assign o_pipe_cpsr = i_cpsr;
assign o_pipe_spsr = i_spsr;
assign o_pipe_gpr_we = gpr_we;
assign o_pipe_cpsr_nzcv_we = condpass & i_pipe_cpsr_nzcv_we;
assign o_pipe_cpsr_nzcv_dsel = i_pipe_cpsr_nzcv_dsel;
assign o_pipe_cpsr_aif_we = {3{condpass}} & {3{cpsr_priv}} & i_pipe_cpsr_aif_we;
assign o_pipe_cpsr_aif_dsel = i_pipe_cpsr_aif_dsel;
assign o_pipe_cpsr_aif_d_imm = i_pipe_cpsr_aif_d_imm;
assign o_pipe_cpsr_mode_we = condpass & cpsr_priv & i_pipe_cpsr_mode_we ;
assign o_pipe_cpsr_mode_dsel = i_pipe_cpsr_mode_dsel;
assign o_pipe_cpsr_mode_d_imm = i_pipe_cpsr_mode_d_imm;
assign o_pipe_spsr_we = condpass & i_pipe_spsr_we;
assign o_pipe_spsr_dsel = i_pipe_spsr_dsel;
assign o_pipe_gpr_we0 = condpass & (i_pipe_lsm ? lsm_gpr_we0 : i_pipe_gpr_we0);
assign o_pipe_gpr_wa0 = i_pipe_gpr_wa0 ;
assign o_pipe_gpr_wa0_exc = i_pipe_gpr_wa0_exc ;
assign o_pipe_gpr_dsel0_ex2 = i_pipe_gpr_dsel0_ex2;
assign o_pipe_gpr_dsel0_ex3 = i_pipe_gpr_dsel0_ex3;
assign o_pipe_gpr_dsel0_wb  = i_pipe_gpr_dsel0_wb ;
assign o_pipe_gpr_d0_prev = gpr_d0_prev;
assign o_pipe_gpr_we1 = (condpass & i_pipe_gpr_we1 & ~&i_pipe_gpr_wa1);
assign o_pipe_gpr_wa1 = i_pipe_gpr_wa1;
assign o_pipe_gpr_wa1_usr = i_pipe_gpr_wa1_usr;
assign o_pipe_gpr_dsel1 = i_pipe_gpr_dsel1;
assign o_pipe_alu_op = i_pipe_alu_op;
assign o_pipe_shifter_operand_imm = i_pipe_shifter_operand_imm;
assign o_pipe_ls = (condpass & i_pipe_ls);
assign o_pipe_ls_store = i_pipe_ls_store;
assign o_pipe_ls_addr_offset_sel = i_pipe_ls_addr_offset_sel;
assign o_pipe_ls_addr_sel = i_pipe_ls_addr_sel;
assign o_pipe_lsm_regcnt_tot = i_pipe_lsm_regcnt_tot;
assign o_pipe_lsm_regcnt_dec = i_pipe_lsm_regcnt_dec;
assign o_pipe_lsm_regcnt_inc = i_pipe_lsm_regcnt_inc;
assign o_pipe_ls_part = i_pipe_ls_part;
assign o_pipe_ls_half = i_pipe_ls_half;
assign o_pipe_ls_ld_sign_ext = i_pipe_ls_ld_sign_ext;
assign o_pipe_ls_double = i_pipe_ls_double;
assign will_branch_wb = condpass & (i_pipe_lsm ? lsm_branch_wb_ldm : i_pipe_branch_wb);
assign branch_wb = will_branch_wb;
assign o_pipe_branch = branch_ex1 | branch_wb;
assign o_pipe_branch_dest_sel = {i_pipe_branch_ex1, i_pipe_branch_wb_dest_sel};
assign o_pipe_mul = (i_pipe_mul);
assign o_pipe_mul_long = i_pipe_mul_long;
assign o_pipe_mul_sign = i_pipe_mul_sign;
assign o_pipe_mul_add = i_pipe_mul_add;
assign o_pipe_ext_rot = i_pipe_ext_rot;
assign o_pipe_ext_op = i_pipe_ext_op;
assign o_pipe_ext_sign = i_pipe_ext_sign;
assign o_pipe_ext_add = i_pipe_ext_add;
assign o_pipe_coproc_sel = i_pipe_coproc_sel;
assign o_pipe_coproc_cp_num = i_pipe_coproc_cp_num;
assign o_pipe_coproc_op1 = i_pipe_coproc_op1;
assign o_pipe_coproc_op2 = i_pipe_coproc_op2;
assign o_pipe_coproc_crn = i_pipe_coproc_crn;
assign o_pipe_coproc_crm = i_pipe_coproc_crm;

assign branch_ex1 = condpass & i_pipe_branch_ex1;
assign o_pipe_branch_dest_ex1 = branch_dest_ex1;

assign o_done = ~(condpass & i_pipe_lsm & lsm_busy);
assign o_valid = i_pipe_valid;

assign o_gpr_rn_sel = i_pipe_gpr_rn_sel;
assign o_gpr_rm_sel = i_pipe_gpr_rm_sel;
assign o_gpr_rs_sel = i_pipe_gpr_rs_sel;
assign o_gpr_rd_sel = i_pipe_gpr_rd_sel;
assign o_gpr_rd_sel_usr = i_pipe_gpr_rd_sel_usr;

assign o_fb_valid = i_pipe_valid;
assign o_fb_pc = i_pipe_pc;
assign o_fb_instr = i_pipe_instr;
assign o_fb_retaddr = i_pipe_retaddr;
assign o_fb_cond = i_pipe_cond;
assign o_fb_gpr_rn_sel = i_pipe_gpr_rn_sel;
assign o_fb_gpr_rd_sel = lsm_rd_sel_fb;
assign o_fb_gpr_rd_sel_usr = i_pipe_gpr_rd_sel_usr;
assign o_fb_gpr_rs_sel = i_pipe_gpr_rs_sel;
assign o_fb_gpr_rm_sel = i_pipe_gpr_rm_sel;
assign o_fb_gpr_we0 = i_pipe_gpr_we0;
assign o_fb_gpr_wa0 = i_pipe_gpr_wa0;
assign o_fb_gpr_wa0_exc = i_pipe_gpr_wa0_exc;
assign o_fb_gpr_dsel0_ex1 = i_pipe_gpr_dsel0_ex1;
assign o_fb_gpr_dsel0_ex2 = i_pipe_gpr_dsel0_ex2;
assign o_fb_gpr_dsel0_ex3 = i_pipe_gpr_dsel0_ex3;
assign o_fb_gpr_dsel0_wb = i_pipe_gpr_dsel0_wb;
assign o_fb_gpr_we1 = i_pipe_gpr_we1;
assign o_fb_gpr_wa1 = lsm_gpr_wa1_fb;
assign o_fb_gpr_wa1_usr = i_pipe_gpr_wa1_usr;
assign o_fb_gpr_dsel1 = i_pipe_gpr_dsel1;
assign o_fb_alu_op = i_pipe_alu_op;
assign o_fb_shifter_operand_imm = i_pipe_shifter_operand_imm;
assign o_fb_cpsr_nzcv_we = i_pipe_cpsr_nzcv_we;
assign o_fb_cpsr_nzcv_dsel = i_pipe_cpsr_nzcv_dsel;
assign o_fb_cpsr_aif_we = i_pipe_cpsr_aif_we;
assign o_fb_cpsr_aif_dsel = i_pipe_cpsr_aif_dsel;
assign o_fb_cpsr_aif_d_imm = i_pipe_cpsr_aif_d_imm;
assign o_fb_cpsr_mode_we = i_pipe_cpsr_mode_we;
assign o_fb_cpsr_mode_dsel = i_pipe_cpsr_mode_dsel;
assign o_fb_cpsr_mode_d_imm = i_pipe_cpsr_mode_d_imm;
assign o_fb_cpsr_priv = i_pipe_cpsr_priv;
assign o_fb_spsr_we = i_pipe_spsr_we;
assign o_fb_spsr_dsel = i_pipe_spsr_dsel;
assign o_fb_ls = i_pipe_ls;
assign o_fb_ls_store = i_pipe_ls_store;
assign o_fb_ls_addr_offset_sel = i_pipe_ls_addr_offset_sel;
assign o_fb_ls_addr_sel = i_pipe_ls_addr_sel;
assign o_fb_ls_part = i_pipe_ls_part;
assign o_fb_ls_half = i_pipe_ls_half;
assign o_fb_ls_ld_sign_ext = i_pipe_ls_ld_sign_ext;
assign o_fb_ls_double = i_pipe_ls_double;
assign o_fb_lsm = i_pipe_lsm;
assign o_fb_lsm_reglist = lsm_reglist_fb;
assign o_fb_lsm_regcnt_tot = i_pipe_lsm_regcnt_tot;
assign o_fb_lsm_regcnt_dec = lsm_regcnt_dec_fb;
assign o_fb_lsm_regcnt_inc = lsm_regcnt_inc_fb;
assign o_fb_branch_ex1 = i_pipe_branch_ex1;
assign o_fb_branch_ex1_dest_sel = i_pipe_branch_ex1_dest_sel;
assign o_fb_branch_ex1_dest_imm = i_pipe_branch_ex1_dest_imm;
assign o_fb_branch_wb = i_pipe_branch_wb;
assign o_fb_branch_wb_dest_sel = i_pipe_branch_wb_dest_sel;
assign o_fb_mul = i_pipe_mul;
assign o_fb_mul_long = i_pipe_mul_long;
assign o_fb_mul_sign = i_pipe_mul_sign;
assign o_fb_mul_add = i_pipe_mul_add;
assign o_fb_ext_rot = i_pipe_ext_rot;
assign o_fb_ext_op = i_pipe_ext_op;
assign o_fb_ext_sign = i_pipe_ext_sign;
assign o_fb_ext_add = i_pipe_ext_add;
assign o_fb_coproc_sel = i_pipe_coproc_sel;
assign o_fb_coproc_cp_num = i_pipe_coproc_cp_num;
assign o_fb_coproc_op1 = i_pipe_coproc_op1;
assign o_fb_coproc_op2 = i_pipe_coproc_op2;
assign o_fb_coproc_crn = i_pipe_coproc_crn;
assign o_fb_coproc_crm = i_pipe_coproc_crm;

endmodule
